package com.huang.volatiled;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

//看见性
public class test2 {
  volatile    static int a=0;
   // volatile  static int b=0;
   volatile static AtomicInteger b= new AtomicInteger(0);
    public static void main(String[] args) throws InterruptedException {

        for (int i = 0; i <10000; i++) {

            new Thread(()->{
                 b.getAndIncrement();
             //   b++;
            }).start();
        }
  //  TimeUnit.SECONDS.sleep(2);//让上面的线程  全运行结束  在打印b

        while (Thread.activeCount()>2){ //main  和 gc线程
            Thread.yield(); //让出执行
        }  //让上面的线程  全运行结束  在打印b

       System.out.println(b);

//        new Thread(()->{
//            try {
//                TimeUnit.SECONDS.sleep(1);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            a=2;
//        }).start();
//
//        new Thread(()->{
//            while (a==0){
//                System.out.println("不可见");
//            }
//            System.out.println("变为2了");
//        }).start();

    }
}
